package br.com.requisicao.compra.dao.impl;

import java.util.List;

import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.criterion.Order;

import br.com.requisicao.compra.canonico.Cidade;
import br.com.requisicao.compra.dao.ICidadeDAO;
import br.com.requisicao.compra.util.HibernateUtil;


public class CidadeDAO implements ICidadeDAO {

	public Cidade salvarOuAtualizar(Cidade cidade) {

		Session session = HibernateUtil.getSession();

		try {
			Transaction tx = session.beginTransaction();
			session.saveOrUpdate(cidade);
			tx.commit();
			session.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}

	public List<Cidade> obtemTodasCidades() {
		Session session = HibernateUtil.getSession();

		List<Cidade> cidade = null;

		try {

			cidade = session.createCriteria(Cidade.class)
					.addOrder(Order.asc("cidade")).list();

		} catch (Exception e) {
			e.printStackTrace();

		} finally {
			session.close();
		}

		return cidade;
	}

	public Cidade excluir(Cidade cidade) {

		Session session = HibernateUtil.getSession();

		try {

			Transaction tx = session.beginTransaction();
			session.delete(cidade);
			tx.commit();
			session.close();

		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}

	public Cidade pesquisarPorId(Long codigo) {
		Session session = HibernateUtil.getSession();
		Cidade cidade = null;
		try {
			cidade = (Cidade) session.get(Cidade.class, codigo);
		} finally {
			session.close();
		}
		return cidade;
	}
}
